#if !defined(__APP_BUFFER)
#define __APP_BUFFER
#include <pthread.h>
// 定义缓冲区的结构体
typedef struct
{
    char *ptr;      // 数据指针
    int total_size; // 数据大小
    int len;        // 缓存区已存数据长度
    int offset;     // 缓存区数据偏移量
    pthread_mutex_t lock;
}Buffer;
// 初始化缓冲区
// size 缓冲区大小
// return：缓冲区指针
Buffer *app_buffer_init(int size);
// 释放缓冲区
// buffer 缓冲区指针
// return void
void app_buffer_free(Buffer *buffer);
// 向缓冲区写入数据
// buffer 缓冲区指针
// data 数据指针
// len 数据长度
// return：成功：0（全部写入了） 失败：-1
int app_buffer_write(Buffer *buffer, char *data, int len);
// 从缓冲区读取数据
// buffer 缓冲区指针
// data 存放读取到的数据的容器（一般是数组）
// len 要读取的数据长度
// return：成功：读取到的数据长度 失败：-1（可能是缓冲区的长度不够）
int app_buffer_read(Buffer *buffer, char *data, int len);
#endif // __APP_BUFFER
